from pyspark import SparkConf
from pyspark import SparkContext

if __name__ == '__main__':
    conf = SparkConf().setMaster("local[*]").setAppName("spark01")
    sc = SparkContext(conf=conf)

    # 每个元素标识：一个用户访问某个网站的次数
    lst = [('baidu', 5), ('qq', 4), ('baidu', 2), ('qq', 30), ('aliyun', 23)]

    # 需求：计算每个网站的总访问次数，和每个用户在当前网站中的平均访问次数
    rdd1 = sc.parallelize(lst)
    rdd2 = rdd1.map(lambda x: (x[0], (x[1], 1)))  # (网站，该用户访问次数，用户数(1)) 比如：('baidu',5) -> ('baidu',(5,1))


    # print(rdd2.collect())
    def test1(v1, v2):
        return (v1[0] + v2[0], v1[1] + v2[1])


    rdd3 = rdd2.reduceByKey(test1)

    rdd4 = rdd3.map(lambda x: (x[0], x[1][0] / x[1][1]))
    print(rdd4.collect())
